perm filename TEST3[NET,KMC] blob sn#166717 filedate 1975-07-02 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00003 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	BEGIN   % THIS FILE HAS INTENT ROUTINES       %
C00011 00003	
C00027 ENDMK
C⊗;
BEGIN   % THIS FILE HAS INTENT ROUTINES       %


SPECIAL OLDGIBB, OLDMISS, LOWMAN, TRACEVFLAG;
NEW ?!ANAPHLISTNEW;
SPECIAL ACTION, ONEDIA, SUMEX; 
NEW	ACTION, ONEDIA, SUMEX;
SPECIAL EXPERIMENT;

DEFINE CAR PREFIX α, CDR PREFIX β, PROG2 ⊃ 3 3, CONS ↓ 86 83,
	THEN →, ELSE \, CARN PREFIX, CHOOSE PREFIX, BL PREFIX, NUMED PREFIX;

EXPR INF(A); 	% INITIALIZATION ROUTINE %
	BEGIN NEW B,VA;  
	ALLOWRUN();
	INPUTFILE←A; LAMDA←8; NOTSAVED←'NDIA;
	INITFN 'EXIT;
	ANALYZE(NIL);
	GCGAG(NIL);
	RUNTIM(NIL);
	VA ← (B←GETPPN()) & (B SEQ " VAKMC");
	IF NOT VA THEN INITPARAMS() ALSO INIT();
	IF VA  THEN INITPARAMS1() ALSO  INITPARAMS2() ALSO INIT();
	IF SAVE_FILE THEN INIT_FILE( (IF VA THEN 'VAHOSP) CAT
	  ", TRACEV = " CAT TRACEV CAT ", WINDOWS = " 
		CAT WINDOWS CAT ", PARANOIA = "
		CAT (IF WEAK THEN 'WEAK ELSE IF HURT=0 THEN 'MILD ELSE 'STRONG) );
	IF WINDOWS THEN WININIT();
	PARRY();
	END;

EXPR EXPERIMENT();  % EXPERIMENTS OF RAISING AND LOWERING SHAME %
	BEGIN NEW A; 
	IF NOT EXPERIMENT | (EXPERIMENT='SEVEN) THEN RETURN NIL;
	IF NOT  (L='SEVEN) THEN RETURN NIL;
	IF NOT  (M='EIGHT) THEN RETURN NIL;
	IF INPUTNO=7 THEN HURT←HURT+5;
	IF INPUTNO=17 THEN HURT←HURT-5;
	END;

EXPR TWINDOW(N,FLAG,L);  % PRINTS OUT WINDOW STUFF FOR A TELETYPE %
	BEGIN NEW A;
	A←ASSOC ( N, '(	( 2 . "Input:	" )
			( 3 . "Respelled:  " )
			( 4 . "Canonical form:  " )
			( 5 . "Segmented:  " )
			( 7 . "Simple patterns:  " )
			( 9 . "Result:  " )
			( 33 . "Preprocess:  " )
			( 36 . "Inferences succeeded:  " )
			( 37 . "New beliefs:  " )
			( 40 . "Emotions:  " )
			( 42 . "Intentions:  " )
			( 44 . "Action:  " )		) );
	IF A & (FLAG | L | M  ) THEN PRINC CDR A  ALSO PRINTSTR L;
	IF A & ((N=88) | (N=9) | (N=36) | (N=42)) THEN PRINC CDR A  ALSO PRINTSTR L;
	IF A & (FLAG | (N=9) | (N=36) | (N=42)) THEN PRINC CDR A  ALSO PRINTSTR L;
	END;

EXPR TIMESTAT();  % THIS KEEPS THE TIME FOR NET AND NONNET JOBS %
	< IF LOWMAN THEN 'NET ELSE 'NONNET, RUNTIM(T) > ;

EXPR GOODGUYS(A); T;

EXPR GOODPPN();  
	BEGIN NEW A;  A←GETPPN();  A←SUBSTR(A,4,3);
	RETURN ( SEQ(A,"BLF") OR SEQ(A,"KMC") OR SEQ(A,"RCP") ) ;
	END;

EXPR KEN();
	BEGIN NEW A;  A←GETPPN();  A←SUBSTR(A,4,3); RETURN SEQ(A,"KMC");
	END;

EXPR ERROR(MESS,L);

	?!ERROR← ERROR_FILE( <MESS,L,PM2INPUT,PMINPUT,FILE1,BUG> ) CONS ?!ERROR;

% ***** THIS ONE IGNORED AS OF MAR 24, 75
EXPR ALLOWRUN2();
	BEGIN NEW HOUR,A,L,FILCHAN,NUM,FLAG,BAD,H; SPECIAL TRACEVFLAG;
	TRACEVFLAG←NIL;
	FILCHAN←EVAL<'INPUT,'(PAR BLF),'QPARRY>;
	INC(FILCHAN,NIL);
	H←READ();  IF H THEN PRINTSTR(H);
	IF GOODPPN() OR ( NOT PTYJOB() AND NOT REMOTE() ) THEN INC(NIL,T) ALSO RETURN T;
	NUM←READ();  FLAG←READ(); H←READ();
	L←NIL;  WHILE A←READ() DO L←A CONS L;
	INC(NIL,T);  BAD←MEMQ(AT GETNET(),L);
	A←TIMEUUH();  HOUR←αA;
	IF (9≤HOUR) & (HOUR≤16) AND NOT MEMQ(αβββDATE(0), '(SATURDAY SUNDAY)) THEN
	  IF NOT FLAG OR  BAD  OR ( NOT H AND SEQ(GETNET(),"100100") ) THEN SWAPNO();

	IF NAMEIN() ≥ NUM THEN SWAPNO();
	TRACEVFLAG← EQ(FLAG,'ALL);
	END;

EXPR REMOTE(); 
	BEGIN NEW A; A ← LSH( LSH(TTYUU(),18), -18 );  
	RETURN ( (A=8) OR (A=9) OR (A=14) ); 
	END;
 ***** THIS ONE IGNORED AS OF MAR 24, 75 ****** THRU HERE %

EXPR MEASURE(L,M);  % USED IN INFERENCES TO MEASURE QUANTITIES %
	IF NUMBERP(L) & NUMBERP(M) THEN GREATERP(L,M)  ELSE EQ(L,M);


EXPR GN(); BEGIN  GCGAG(NIL);	INITFN 'GN2; END;
EXPR GN2();  INF( 'PDATZ );	% THE ROUTINE THAT INITFN STARTS UP %

EXPR INITPARAMS1();	% INITIALIZE PARAMS FOR VA INTERVIEWS %

	BEGIN SUPPRESS←T;  WEAK←NIL;
	ANGER←ANGER0←FEAR←FEAR0←MISTRUST←MISTRUST0←HURT←HURT0←0;
	TRACEV←NIL; SAVE_FILE←T;
	END;

EXPR ANDDO(L,M); L;

EXPR WINDOW(N,F,L); 
	BEGIN IF TRACEV='ALL THEN TWINDOW(N,F,L);  RETURN L; END;
EXPR WINDOWSET(N); N;
EXPR WINDOW_PRINT(A,B,C,D); NIL;

EXPR SWEARER();		% SEMANTIC FUNCTION CALLED BY SWEAR INPUT %

	BEGIN  SWEARNO←SWEARNO+1;  AJUMP←3;
	IF SWEARNO=5  THEN ENDE←T ALSO RETURN CHOOSE 'MADEXIT;
	END;

EXPR SUMEX1();
	% THIS ROUTINE SETS UP A WORKING VERSION OF PARRY WHICH WILL ALMOST RUN ON SUMEX %
	BEGIN
	INITFN(NIL);
%	INCORE(); %	% SETS A FLAG SO .DMP FILES WONT CLOBBER EACH OTHER %
	SYNNYM('A);	% READS IN SYNNYM.PAR %
	SPAT('(A));	% READS IN SPATS.PAR %
	CPAT('(A));	% READS IN CPATS.PAR %
	DSKLOC('A);	% READS IN PDATX.PAR %
	ONEDIA←T; SUMEX←T; TRACEVFLAG←NIL;
	PUTPROP('ALLOWRUN, '(LAMBDA NIL T), 'EXPR);
	PUTPROP('SWAPP, '(LAMBDA NIL T), 'EXPR);
	INITFN 'GN2;
	END;

EXPR SUMEX2();
	BEGIN TRACE(SUMEX1);  UNTRACE(SUMEX1);
	DIAFILEAREA←INPUTFILEAREA←'(FAU GHT);
	END;

EXPR ZERONIL(L);  IF NOT L THEN 0 ELSE L;

EXPR INTENTION();	% CALCULATES THE CURRENT INTENTION %

	BEGIN NEW A;
	FOR NEW I IN INTLIST DO  IF GET0(I,'NTRUTH)≥5 THEN A←WINDOW(42,NIL,I);
	IF NOT INTENT | (A='PEXIT) | (A='PEXIT2) THEN INTENT←A;  
	WINDOW(42,NIL, " : " CAT INTENT);
	END;

% DOINTENT  PERFORMS THE CURRENT INTENTION, CALCULATES AN ACTION, AND RETURNS A λ %
% 	CHECKS INTENTS, RETURNS NEW VALUE FOR FOUND IN REACT, ELSE NIL %

EXPR PMAFIA();
	(IF FEAR≥10 THEN CHOOSE 'PANIC ELSE
	 IF BL 'DGAMES THEN NIL ANDDO (ANGER←ANGER-3)
		 ELSE CHOOSE 'PROBE)   ANDDO ADDTO('PMAFIA,-2);

EXPR PHELP();		IF DELFLAG THEN ADDTO('PTELL,5)
	ELSE ( IF FLARE='INIT & 
	 ( GET(STRUC,'UNIT) | NOT REACTTO | ('LEADIN=GET(REACTTO,'CLASS))   )
		THEN ADDTO('PHELP,-5) ALSO FLARELEAD(CHOOSELEAD())   )  ;

EXPR LULL();  % RETURNS T IF THERE IS A LULL IN THE CONVERSATION %
	% IF MISC IS USED AND LULL(), THEN WILL JUMP BACK TO FLARES OR DELNS %
	IF OLDTOPIC='ANAPH OR OLDTOPIC='IYOUME THEN T
	ELSE IF LENGTH(SSENT)≥10 THEN NIL
	ELSE EQ(1, RANDOM(2));


EXPR PARANOIA();

	BEGIN NEW A;
	ASSERT('?*DTRUSTWORTHY);
	FOR NEW I IN PARBEL DO  IF MEMQ(I,'(LYING LOSER CRAZY DUMB))
	  THEN ADDTO(I,-1) ALSO A←I;
	IF A THEN A←ASSOC(A,
	 '( (LYING . ?*DHONEST)(LOSER . ?*DSOCIABLE)(CRAZY . DABNORMAL) (DUMB . ?*DCHELP) ))
	  ALSO ASSERT(βA);
	PARBEL←NIL;
	END;

END.